var datagrid; //定义全局变量datagrid
var editData =new Array();//编辑的数据
var editRow = undefined; //定义全局变量：当前编辑的行
var selectUserId = "";//人员编辑id

$(function(){
    //加载部门树
    queryDepartmentTree();
    //加载数据字典下拉列表
    //queryDictionaryList("",CONSTANT.DictionaryTypeDefConstants.HD_HD_PROGERSSNODE);//隐患治理进度节点
    //年度下拉列表
    queryYearthList('yearth');
    queryMonthList('month');
    /**
     * 加载隐患治理列表
     * @type {jQuery}
     */
   /* $.ajax({
        type: "POST",
        url:ROOT_PATH+'/hiddenDanger/hdGovern/queryHDGovernList.shtml',
        dataType:"json",
        success:function(data){
            datagridData=data;
        }

    });*/
   var monthReportId = $("#monthReportId").val();
    datagrid = $("#hdGovernList").datagrid({
        //data:datagridData,
        url: ROOT_PATH+'/hiddenDanger/hdGovern/queryEditPageHDGovernList.shtml?monthReportId='+monthReportId, //请求的数据源
        iconCls: 'icon-save', //图标
        pagination: true, //显示分页
        pageSize: 10, //页大小
        pageList: [10, 15, 20], //页大小下拉选项此项各value是pageSize的倍数
        rownumbers:true,
        singleSelect:true,
        fit: true, //datagrid自适应宽度
        //fitColumns: true, //列自适应宽度
        striped: true, //行背景交换
        nowap: true, //列内容多时自动折至第二行
        //border: false,
        toolbar:'#tb',
        idField: 'id', //主键
        columns: [[//显示的列
            {field:'id',width:100,checkbox:true},
            //{field:'dutyUserId',width:100,hidden:true},
           /* {field:'id',title:'隐患id',width:100},*/
            {field:'hdName',title:'隐患名称',width:100},
            {field:'deptName',title:'隐患所在单位',width:100},
            {field:'dutyDeptName',title:'项目责任单位',width:100},
            {field:'hdGradeName',title:'隐患等级',width:100},
            {field:'addDeptName',title:'登记部门',width:100},
            {field:'addUserName',title:'登记人',width:100},
            {field:'planFinishTime',title:'计划完成时间',width:130},
            {field:'governId',width:100,hidden:true},
            {field:'actualFinishTime',title:'实际完成时间',width:130,editor:{
                type:'datebox',
                options:{
                    editable:false
                }
            }},
            {field:'governContent',title:'治理内容',width:300,
                editor:{type:'textbox',options:{
                    multiline:true,
                    required:true
                }}
            },
            {field:'specificProgress',title:'具体形象进度',width:300, editor:{type:'textbox',
                options:{
                    multiline:true,
                    required:true
                }
            }},
            {field:'progressNodeName',title:'进度节点名称',width:150,hidden:true, editor:{type:'textbox',
                options:{
                    required:true,
                    editable:false
                }
            }},
            {field:'progressNodeId',title:'进度节点',width:150,
                formatter:function(value,row,index){
                if(row.progressNodeName){
                    return row.progressNodeName;
                }
                },
                editor:{type:'textbox',
                options:{
                }
            }},
            {field:'monthInvest',title:'本月完成投资(万元)',width:150, editor:{type:'textbox',
                options:{
                    validType:'intOrFloat',
                    required:true
                }
            }},
            {field:'allInvest',title:'累计已完成投资',width:150},
            {field:'isMonth',title:'是否月报',width:150}
        ]],
        queryParams: {
            //action: 'query'
        }, //查询参数
        //数据加载成功时执行
        loadFilter:function(data){
            //设置editRow
            editRow=undefined;
            /**
             *封装编辑列表的数据
             */
            var rows = data.rows;
            for(var i=0;i<rows.length;i++){
                for(var j=0;j<editData.length;j++){
                    if(rows[i].id==editData[j].id){
                        data.rows[i]=editData[j];
                    }
                }
            }
            return data;
        },
        /*onLoadSuccess:function(data){
            for(var i=0;i<data.length;i++){
                if(){}
            }

        },*/
        onAfterEdit: function (rowIndex, rowData, changes) {
            //endEdit该方法触发此事件
            // var rows= datagrid.datagrid("getChanges");
            editRow = undefined;
        },
        onDblClickRow: function (rowIndex, rowData) {
            //双击开启编辑行
            editTableRowExtend();
            /*if (editRow != undefined) {
                datagrid.datagrid("endEdit", editRow);
            }
            if (editRow == undefined) {
                datagrid.datagrid("beginEdit", rowIndex);
                editRow = rowIndex;
            }*/
        }
    });
    /**
     * 绑定保存按钮事件
     */
    $('#btn_save').on("click", function () {
        //var ret = $("#hdRegisterForm").form('validate');
        //表单验证
        if($("#hdGovernMonForm").form('validate')&&$("#governListForm").form('validate')){
            layer.confirm("确定更新信息？",{btn:['确定','取消']},function(){
                var layerIndex=parent.layer.getFrameIndex(window.name); //获取窗口索引
                //序列化表单数据
                var data = $("#hdGovernMonForm").serializeArray();
                data.push({name:'governListData',value:getPrecautionData()});
                $.ajax({
                    url:ROOT_PATH + '/hiddenDanger/hdGovern/edit.shtml',//提交地址
                    data:data,//将表单数据序列化
                    type:"POST",
                    dataType:"json",
                    success:function(result){
                        if (result.success){
                            layer.msg(result.message,{time:1000,icon:1},function(){
                                WindowManager.closeLayer({
                                    returnValue:""
                                });
                            });
                        }else{
                            layer.msg(result.message,{time:1000,icon:1},function(){
                                //parent.layer.close(layerIndex);
                            });
                        }
                    }
                });
            });
        }else{
            layer.msg("请按规则填写信息!",{time:1000,icon:2});
        }

    });

    /**
     * 绑定人员选择事件
     */
    $("#chargeUser").textbox({
        iconWidth: 15,
        icons: [{
            iconCls: 'icon-add',
            handler: function(e){
                selectUserId ="chargeUser";
                add_contractorInfo_func();
            }
        }]
    });
    /**
     * 监听行编辑列表的分页事件
     */
    var pg = datagrid.datagrid("getPager");
    /*if(pg){
        $(pg).pagination({
            onBeforeRefresh:function(){
                alert('before refresh');
            },
            onRefresh:function(pageNumber,pageSize){
                alert(pageNumber);
                alert(pageSize);
            },
            onChangePageSize:function(){
                alert('pagesize changed');
            },
            onSelectPage:function(pageNumber,pageSize){
                alert(pageNumber);
                datagrid.datagrid("load",{
                    pageNumber:pageNumber,
                    pageSize:pageSize
                });
               // return true;
                //alert(pageNumber);
               // alert(pageSize);
            }
        });
    }*/


});

/**
 * 定义表单验证
 */
$.extend($.fn.validatebox.defaults.rules, {
    minLength: {
        validator: function(value, param){
            return value.length >= param[0];
        },
        message: '最小长度'
    },
    intOrFloat: {// 验证整数或小数
        validator: function (value) {
            // alert(/^\d+(\.\d+)?$/i.test(value));
            return /^\d+(\.\d+)?$/i.test(value);
        },
        message: '请输入数字，并确保格式正确'
    },
    validSelect:{//验证为空字符串
        validator:function(value){
            //alert(value!="请选择");
            return value!="请选择"&&value!='';
        },
        message:'请选择'
    }

});
/**
 * 查询部门树方法
 */
function queryDepartmentTree(){
    $.ajax({
        url:ROOT_PATH + '/permission/department/getDepartmentTree.shtml',//提交地址
        data:{parentId : 0},//将表单数据序列化
        type:"POST",
        dataType:"json",
        success:function(result){
            $('#dept').combotree(
                {
                    data:result,
                    loadFilter:function(data){
                        var newData = new Array();
                        newData.push({id:"",text:'请选择'});
                        newData.push(data[0]);
                        return newData;
                    }
                }
            );
            $("#dutyDept").combotree({
                data:result,
                loadFilter:function(data){
                    var newData = new Array();
                    newData.push({id:"",text:'请选择'});
                    newData.push(data[0]);
                    return newData;
                }
            });
            //主管部门
            $("#competentDept").combotree({
                data:result,
                loadFilter:function(data){
                    var newData = new Array();
                    newData.push({id:"",text:'请选择'});
                    newData.push(data[0]);
                    return newData;
                }
            });
        }
    });
}
/**
 * 人员信息选择
 */
var getSelectedUser = function (data) {
    //给行编辑赋值
    if(selectUserId==""||selectUserId==null){
        var dutyUserED= datagrid.datagrid('getEditor', {index:editRow,field:'dutyUserName'});
        var dutyUserIdED= datagrid.datagrid('getEditor', {index:editRow,field:'dutyUserId'});
        $(dutyUserED.target).textbox("setValue",data[0].name)
        $(dutyUserIdED.target).textbox("setValue",data[0].id)
    }else{//给正常文本框赋值
        $("#"+selectUserId).textbox('setValue',data[0].id);
        $("#"+selectUserId).textbox('setText',data[0].name);
        selectUserId = "";
    }



    //$("#"+selectUserId+"Id").val(data.id);
    // $("#"+selectUserId).textbox('setValue','值123');
    //$("#"+selectUserId).val(data.id);
    // $("#"+selectUserId).text(data.name);
    return data;
};
var add_contractorInfo_func = function () {
    layer.open({
        type: 2,
        title: '选择人员信息',
        area: ['1150px', '70%'],
        content: ROOT_PATH + '/permission/user/simpleList.shtml?isMulti=0'
    });
};

/**
 * 查询数据字典列表的方法
 * @param id
 * @param code
 */
function queryDictionaryList(id,code){

    $.ajax({
        url:ROOT_PATH + '/permission/dictionary/queryDictionaryByDictionaryTypeCode.shtml',//提交地址
        data:{code : code},//将表单数据序列化
        type:"POST",
        dataType:"json",
        success:function(result){
            if(id==""||id==null){
                var progressNodeIdED= datagrid.datagrid('getEditor', {index:editRow,field:'progressNodeId'});
                var progressNodeNameED= datagrid.datagrid('getEditor', {index:editRow,field:'progressNodeName'});

                //var dutyUserIdED= datagrid.datagrid('getEditor', {index:editRow,field:'dutyUserId'});
                //$(progressNodeNameED.target).textbox("setValue",data[0].name)
                //$(dutyUserIdED.target).textbox("setValue",data[0].id)
                $(progressNodeIdED.target).combobox(
                    {
                        data:result,
                        valueField:'id',
                        textField:'text',
                        editable:false,
                        required:true,
                        validType:'validSelect',
                        onSelect:function(r){
                            $(progressNodeNameED.target).textbox('setValue',r.text);
                        },
                        loadFilter:function(data){
                            var newData = new Array();
                            newData.push({id:"",text:'请选择'});
                            for(var i=0;i<data.length;i++){
                                newData.push(data[i])
                            }
                            return newData;
                        }
                    }
                );
            }else {//给正常文本框赋值
                $('#'+id).combobox(
                    {
                        data:result,
                        valueField:'id',
                        textField:'text',
                        loadFilter:function(data){
                            var newData = new Array();
                            newData.push({id:"",text:'请选择'});
                            for(var i=0;i<data.length;i++){
                                newData.push(data[i])
                            }
                            return newData;
                        }
                    }
                );
            }
        }
    });
}
/**
 * 设置年度下拉列表
 * @param id
 * @param code
 */
function queryYearthList(id){
    var date = new Date();
    var year = date.getFullYear();
    var yearthData = new Array();
    yearthData.push({id:"",text:"请选择"});
    for(var i =0;i<6;i++){
        var y = {id:year-i,text:(year-i)+'年'}
        yearthData.push(y);
    }
    $('#'+id).combobox(
        {
            data:yearthData,
            valueField:'id',
            textField:'text'
        }
    );
}
function queryMonthList(id){
    var monthData = new Array();
    monthData.push({id:"",text:"请选择"});
    for(var i =1;i<=12;i++){
        var m = {id:i,text:i+'月'}
        monthData.push(m);
    }
    $('#'+id).combobox(
        {
            data:monthData,
            valueField:'id',
            textField:'text'
        }
    );
}


/*==============================行编辑操作方法================================================*/
/**
 * 打开加编辑行
 */
function appendTableRow() {//添加列表的操作按钮添加，修改，删除等
    //添加时先判断是否有开启编辑的行，如果有则把开户编辑的那行结束编辑
    if (editRow != undefined) {
        datagrid.datagrid("endEdit", editRow);
    }
    //添加时如果没有正在编辑的行，则在datagrid的第一行插入一行
    if (editRow == undefined) {
        datagrid.datagrid("insertRow", {
            index: 0, // index start with 0
            row: {

            }
        });
        //将新插入的那一行开启编辑状态
        datagrid.datagrid("beginEdit", 0);
        //给当前编辑的行赋值
        editRow = 0;
    }

}

/**
 * 删除行
 */
function deleteTableRow () {
    //删除时先获取选择行
    var rows = datagrid.datagrid("getSelections");
    //选择要删除的行
    if (rows.length > 0) {
        var lIndex = layer.confirm("确定删除该行数据？",{btn:['确定','取消']},function(){
            //清除行数据
            clearTableRowValue();
            layer.close(lIndex);
        })

        /*$.messager.confirm("提示", "你确定要删除吗?", function (r) {
            if (r) {
                var ids = [];
                /!*for (var i = 0; i < rows.length; i++) {
                 ids.push(rows[i].ID);
                 }*!/
                var row= datagrid.datagrid("getSelected");
                var selectedIndex =  datagrid.datagrid('getRowIndex',row);
                //取消验证
                $("#governListForm").form('disableValidation');
                //清除行数据
                clearTableRowValue();
                //结束编辑
                saveTableRow();
               //datagrid.datagrid('deleteRow', selectedIndex);
                editRow=undefined;
                //将选择到的行存入数组并用,分隔转换成字符串，
                //本例只是前台操作没有与数据库进行交互所以此处只是弹出要传入后台的id
                //alert(ids.join(','));
            }
        });*/
    }
    else {
        $.messager.alert("提示", "请选择要删除的行", "error");
    }
}

/**
 * 保存行数据
 */
function saveTableRow () {
    /*//保存时结束当前编辑的行，自动触发onAfterEdit事件如果要与后台交互可将数据通过Ajax提交后台*/
    var flag = $("#governListForm").form('validate');
    if(!flag){
        var index =layer.confirm("该行还未编辑完成，继续执行将删除编辑行内数据",{btn:['确定','取消']},function() {

            //清除数据
            clearEditingRow();
            //结束编辑
            //datagrid.datagrid("endEdit", editRow);
            layer.close(index);
        });
    }else{
        datagrid.datagrid("endEdit", editRow);
        var rows= datagrid.datagrid("getChanges");
        //遍历rows和editData，保存编辑过的数据
        for(var i=0;i<rows.length;i++){
           // var flag = true;
            for(var j=0;j<editData.length;j++){
                if(rows[i].id==editData[j].id){
                    //flag = false;
                    editData.splice(j,1);//删除原来存在的数据
                }
            }
            //添加行进去
                editData.push(rows[i]);
        }
       // editData.rows;

    }

}

/**
 * 编辑行数据
 */
function editTableRow() {
    //修改时要获取选择到的行
    var rows = datagrid.datagrid("getSelections");
    //如果只选择了一行则可以进行修改，否则不操作
    if (rows.length == 1) {
        //修改之前先关闭已经开启的编辑行，当调用endEdit该方法时会触发onAfterEdit事件
        if (editRow != undefined) {
            datagrid.datagrid("endEdit", editRow);
        }
        //当无编辑行时
        if (editRow == undefined) {
            //获取到当前选择行的下标
            var index = datagrid.datagrid("getRowIndex", rows[0]);
            //开启编辑
            datagrid.datagrid("beginEdit", index);
            //把当前开启编辑的行赋值给全局变量editRow
            editRow = index;
            //当开启了当前选择行的编辑状态之后，
            //应该取消当前列表的所有选择行，要不然双击之后无法再选择其他行进行编辑
            datagrid.datagrid("unselectAll");

        }
        //加载数据字典下拉列表
        queryDictionaryList("",CONSTANT.DictionaryTypeDefConstants.HD_PROGERSSNODE);//隐患治理进度节点
    }

}
/**
 * 取消编辑行
 */
function rejectTableRow () {
    var index =  layer.confirm("确定撤销将删除所有的编辑数据！",{btn:['确定','取消']},function(){
        //取消当前编辑行把当前编辑行罢undefined回滚改变的数据,取消选择的行
        editRow = undefined;
        datagrid.datagrid("rejectChanges");
        datagrid.datagrid("unselectAll");
        //删除已经保存到editData中的数据
        editData =new Array();
        layer.close(index);
        datagrid.datagrid("reload");
    });

}
/**
 * 清空行编辑数据（已执行保存）
 */
function clearTableRowValue(){
    //判断是否正在编辑
    var row = datagrid.datagrid("getSelected");
    var selectedIndex =  datagrid.datagrid('getRowIndex',row)
    //console.log(selectedIndex +"agraegraeg"+editRow);
    if(editRow!=undefined){
        if(selectedIndex!=editRow){
            layer.alert("还有正在编辑行数据，无法删除其他行");
        }else{
            /*//删除editData中的数据
            for(var i=0;i<editData.length;i++){
                if(editData[i].id==row.id){
                    editData.splice(i,1);
                }
            }
            datagrid.datagrid("reload");
            editRow=undefined;
      */
            //删除正在编辑的行数据
            clearEditingRow();
        }

    }else{
        var row = datagrid.datagrid("getSelected");
        //删除editData中的数据
        for(var i=0;i<editData.length;i++){
            if(editData[i].id==row.id){
                editData.splice(i,1);
            }
        }
        datagrid.datagrid("reload");

        /*var selectRow = datagrid.datagrid("getSelected");
        var data = datagrid.datagrid('getData');
        console.log(data);*/
       /* selectRow.actualFinishTime = "";
        selectRow.governContent = "";
        selectRow.specificProgress = "";
        selectRow.progressNodeId = "";
        selectRow.progressNodeName = "";
        selectRow.monthInvest = "";*/
        //datagrid.datagrid("reload");

    }
}
/**
 * 清除正在编辑的数据
 */
function clearEditingRow(){
    //取消验证
    $("#governListForm").form('disableValidation');
    var actualFinishTimeED= datagrid.datagrid('getEditor', {index:editRow,field:'actualFinishTime'});//治理内容
    var governContentED= datagrid.datagrid('getEditor', {index:editRow,field:'governContent'});//治理内容
    var specificProgressED = datagrid.datagrid('getEditor', {index:editRow,field:'specificProgress'});//具体形象进度
    var progressNodeIdED = datagrid.datagrid('getEditor', {index:editRow,field:'progressNodeId'});//进度节点
    var progressNodeNameED = datagrid.datagrid('getEditor', {index:editRow,field:'progressNodeName'});//进度节点
    var monthInvestED = datagrid.datagrid('getEditor', {index:editRow,field:'monthInvest'});//本月完成投资
    $(actualFinishTimeED.target).textbox('setValue',"");
    $(governContentED.target).textbox('setValue',"");
    $(specificProgressED.target).textbox('setValue',"");
    $(progressNodeIdED.target).textbox('setValue',"");
    $(progressNodeNameED.target).textbox('setValue',"");
    $(monthInvestED.target).textbox('setValue',"");
    datagrid.datagrid("endEdit", editRow);
    editRow=undefined;
}
/**
 * 开启行编辑的扩展方法
 */
function editTableRowExtend(){
    //判断是否正在编辑其他行,并且验证该表单是否通过
//debugger

    //alert(flag);
   // $("#hdGovernMonForm").form('validate');
    //alert(flag);
    if(editRow!=undefined){
        var flag = $("#governListForm").form('validate');
        if(!flag){
            var index =layer.confirm("该行还未编辑完成，继续执行将删除编辑行内数据",{btn:['确定','取消']},function() {
                //取消验证
                //$("#governListForm").form('disableValidation');
                //清除数据
                clearEditingRow();
                //开启编辑
                editTableRow();
                layer.close(index);
            });
        }else{
            editTableRow();
        }

        //var index =layer.confirm("继续执行将删除编辑行内数据",{btn:['确定','取消']},function(){
           // alert();
            /*if(editRow!=undefined ){
                var governContentED= datagrid.datagrid('getEditor', {index:editRow,field:'governContent'});//治理内容
                var specificProgressED = datagrid.datagrid('getEditor', {index:editRow,field:'specificProgress'});//具体形象进度
                var progressNodeIdED = datagrid.datagrid('getEditor', {index:editRow,field:'progressNodeId'});//进度节点
                var monthInvestED = datagrid.datagrid('getEditor', {index:editRow,field:'monthInvest'});//本月完成投资

                $(governContentED.target).textbox({
                    required:false
                });
                //$(governContentED.target).textbox('setValue',"");

                $(specificProgressED.target).textbox({
                    required:false
                });
                //$(specificProgressED.target).textbox('setValue',"");
                $(progressNodeIdED.target).textbox({
                    required:false
                });
                // $(progressNodeIdED.target).textbox('setValue',"");
                $(monthInvestED.target).textbox({
                    required:false
                });
                // $(monthInvestED.target).textbox('setValue',"");

                //layer.close(index);
            }*/
        //});

    }else{
        editTableRow();
    }
    //console.log($(governContentED.target).textbox("options"));
}
/**
 * 提交表格数据
 */
function getPrecautionData(){
    //保存表格编辑数据
    saveTableRow();
    //获取编辑表格数据
    //var rows= datagrid.datagrid("getChanges");
    /*for(var i=0;i<editData.length;i++){
        if(editData[i].governContent==""||editData[i].specificProgress==""){

        }
    }*/
    return JSON.stringify(editData);
}